﻿using System;
using System.Collections.Generic;
using System.ComponentModel;
using System.Data;
using System.Drawing;
using System.Text;
using System.Windows.Forms;
using System.Xml.Serialization;
using System.Xml;
using System.IO;

namespace RecognitionNumbers
{
    
    public partial class Фильтры : Form
    {
        Form1 main;
        public Фильтры(Form1 main)
        {
            InitializeComponent();
            this.main = main;
        }

        private void toolStripButton1_Click(object sender, EventArgs e)
        {
            propertyGrid1.SelectedObject = main.настройкиПоискНомера;
            if (main.исходноеИзображение != null)
            {
                поискНомера.Checked = true;
                поискСимвола.Checked = false;
                pictureBox1.Image = main.поискПрямоугольника.input.ToBitmap();
                pictureBox2.Image = main.поискПрямоугольника.output.ToBitmap();
                oneIn.Checked = true;
                oneOut.Checked = false;
                toIn.Checked = false;
                toOut.Checked = true;
            
            }
        }

     

        private void toolStripButton2_Click_1(object sender, EventArgs e)
        {
            XmlSerializer xml;
            FileStream stream;

            xml = new XmlSerializer(typeof(НастройкиПоискНомера));
            stream = new FileStream("НастройкиПоискНомера.xml", FileMode.Create, FileAccess.ReadWrite);
            xml.Serialize(stream, main.настройкиПоискНомера);
            stream.Close();

            xml = new XmlSerializer(typeof(НастройкиПоискаСимволов));
            stream = new FileStream("НастройкиПоискаСимволов.xml", FileMode.Create, FileAccess.ReadWrite);
            xml.Serialize(stream, main.настройкиПоискСимволов);
            stream.Close();
        }

        private void toolStripButton3_Click(object sender, EventArgs e)
        {
            if (main.исходноеИзображение != null)
            {
                main.Обработка(main.исходноеИзображение);
            }
        }

        private void toolStripButton4_Click(object sender, EventArgs e)
        {
            if (поискНомера.Checked)
            {
                pictureBox1.Image = main.поискПрямоугольника.input.ToBitmap();
               
            }
            if (поискСимвола.Checked)
            {
                pictureBox1.Image = main.поискСимволов.input.ToBitmap();
            } 
            oneIn.Checked = true;
             oneOut.Checked = false;
             oneBit.Checked = false;
        }

        private void toolStripButton5_Click(object sender, EventArgs e)
        {
            if (поискНомера.Checked)
            {
                pictureBox1.Image = main.поискПрямоугольника.output.ToBitmap();
            }
            if (поискСимвола.Checked)
            {
                pictureBox1.Image = main.поискСимволов.output.ToBitmap();
            }
            oneIn.Checked = false;
                oneOut.Checked = true;
                oneBit.Checked = false;
        }

        private void toolStripButton6_Click(object sender, EventArgs e)
        {
            if (поискНомера.Checked)
            {
                pictureBox2.Image = main.поискПрямоугольника.input.ToBitmap();
            }
            if (поискСимвола.Checked)
            {
                pictureBox2.Image = main.поискСимволов.input.ToBitmap();
            }
            toIn.Checked = true;
                toOut.Checked = false;
                toBit.Checked = false;
        }

        private void toolStripButton7_Click(object sender, EventArgs e)
        {
            if (поискНомера.Checked)
            {
                pictureBox2.Image = main.поискПрямоугольника.output.ToBitmap();
            }
            if (поискСимвола.Checked)
            {
                pictureBox2.Image = main.поискСимволов.output.ToBitmap();
            }
            toIn.Checked = false;
            toOut.Checked = true;
      
            toBit.Checked = false;

        
        }

        private void toolStripButton1_Click_1(object sender, EventArgs e)
        {
            
            if (main.исходноеИзображение != null)
             if (main.поискСимволов.input!=null){
               propertyGrid1.SelectedObject = main.настройкиПоискСимволов;
                поискНомера.Checked = false;
                поискСимвола.Checked = true;
                pictureBox1.Image = main.поискСимволов.input.ToBitmap();
                pictureBox2.Image = main.поискСимволов.output.ToBitmap();
                oneIn.Checked = true;
                oneOut.Checked = false;
                toIn.Checked = false;
                toOut.Checked = true;
                oneBit.Checked = false;
                toBit.Checked = false;

            }
        }

        private void toolStripButton1_Click_2(object sender, EventArgs e)
        {
            if (поискНомера.Checked)
            {
                pictureBox1.Image = main.поискПрямоугольника.binar.ToBitmap();
            }
            if (поискСимвола.Checked)
            {
                pictureBox1.Image = main.поискСимволов.binar.ToBitmap();
            }
            oneIn.Checked = false;
            oneOut.Checked = false;
            oneBit.Checked = true;
            

        }

        private void toolStripButton4_Click_1(object sender, EventArgs e)
        {
            if (поискНомера.Checked)
            {
                pictureBox2.Image = main.поискПрямоугольника.binar.ToBitmap();
            }
            if (поискСимвола.Checked)
            {
                pictureBox2.Image = main.поискСимволов.binar.ToBitmap();
            }
            toIn.Checked = false;
            toOut.Checked = false;
            toBit.Checked = true;
        }

        private void toolStripButton1_Click_3(object sender, EventArgs e)
        {
            toolStripProgressBar1.Visible = true;
            if (main.исходноеИзображение != null)
            {
                int t, b;
                t = 150;
                b = 100;
                int p = 0;
                for (int i = 200; i > 100; i--)
                {
                    toolStripProgressBar1.Value = (i - 100)  ;
                    main.настройкиПоискНомера.порогБинаризации = i;
                    main.поискПрямоугольника = new SearchRectangle(main.исходноеИзображение.image, main.настройкиПоискНомера.порогБинаризации, main.настройкиПоискНомера.процентЦветных, main.настройкиПоискНомера.процентЧерногоНиз, main.настройкиПоискНомера.процентЧерногоВерх, main.настройкиПоискНомера.соотношениеСторон, main.настройкиПоискНомера.отклонениеСторон);

                    if (main.поискПрямоугольника.coordinatesRectangle.Count >= p)
                    {
                        if (p == 0)
                        {
                            p = main.поискПрямоугольника.coordinatesRectangle.Count;
                            t = i;
                        }
                    }
                    else
                    {
                        if (t > 0)
                        {
                            b = i;
                            main.настройкиПоискНомера.порогБинаризации = (b + t) / 2;
                            break;
                        }

                    }
                }


                main.настройкиПоискНомера.порогБинаризации = (b + t) / 2;
                main.поискПрямоугольника = new SearchRectangle(main.исходноеИзображение.image, main.настройкиПоискНомера.порогБинаризации, main.настройкиПоискНомера.процентЦветных, main.настройкиПоискНомера.процентЧерногоНиз, main.настройкиПоискНомера.процентЧерногоВерх, main.настройкиПоискНомера.соотношениеСторон, main.настройкиПоискНомера.отклонениеСторон);

              
                t = 150;
                b = 100;
                p = 0;
                if (main.поискПрямоугольника.coordinatesRectangle.Count > 0) 
                for (int i = 150; i > 100; i--)
                {
                    toolStripProgressBar1.Value = (i - 100)*2;
                    main.настройкиПоискСимволов.порогБинаризации = i;
                    main.поискСимволов = new SearchSymbol(main.поискПрямоугольника.imageRectangle[0], main.настройкиПоискСимволов.порогБинаризации, main.настройкиПоискСимволов.радиус, main.настройкиПоискСимволов.размер, main.настройкиПоискСимволов.отклонениеРазмер, main.настройкиПоискСимволов.соотношениеСторон, main.настройкиПоискСимволов.отклонениеСторон);
                    if (main.поискСимволов.coordinatesRectangle.Count >=8)
                    {
                        if (t == 150)
                        {
                            //p = main.поискСимволов.coordinatesRectangle.Count;
                            t = i;
                        }
                    }
                    else
                    {
                        if (t !=150)
                        {
                            b = i;
                           
                            break;
                        }

                    }
                }
                main.настройкиПоискСимволов.порогБинаризации = (b + t) / 2;


                toolStripProgressBar1.Visible = false;
            }
        }

    }
}
